package pe.edu.upc.dsd.epica.dao;

import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
import pe.edu.upc.dsd.epica.model.Promocion;
import pe.edu.upc.dsd.epica.serviceimp.PromocionServiceImpl;

public class PromocionDaoJdbc extends SimpleJdbcDaoSupport implements PromocionDao{
	

	@Override
	public void save(Promocion promocion) {
		getSimpleJdbcTemplate().update("insert into promociones(codigo, nombre, descripcion,fecVencimiento,numVisitas,imagen,codEstablecimiento,porDescto) values(?,?,?,?,?,?,?,?)",
				promocion.getCodigo(),
				promocion.getNombre(),
				promocion.getDescripcion(),
				promocion.getFecVencimiento(),
				promocion.getNumVisitas(),
				promocion.getImagen(),
				promocion.getEstablecimiento().getCodigo(),
				promocion.getPorDescto());		
	}

	@Override
	public void update(Promocion promocion) {
		getSimpleJdbcTemplate().
		update("update `promociones` set nombre=?,descripcion=?,fecVencimiento=?,numVisitas=?,imagen=?,codEstablecimiento=?,porDescto=? where codigo=?", 
				promocion.getNombre(),
				promocion.getDescripcion(),
				promocion.getFecVencimiento(),
				promocion.getNumVisitas(),
				promocion.getImagen(),
				promocion.getEstablecimiento().getCodigo(),
				promocion.getPorDescto(),
				promocion.getCodigo());
		
	}

	@Override
	public void delete(String codigo) {
		getSimpleJdbcTemplate().update("delete from `promociones` where codigo=?",codigo);			
	}

	@Override
	public Promocion findByPromocionCode(String codigo) {
		return getSimpleJdbcTemplate().
				queryForObject("select codigo, nombre, descripcion,fecVencimiento,numVisitas,imagen,codEstablecimiento,porDescto from `promociones` where codigo = ?", 
				new PromocionEstablecimientoRowMapper(), codigo);
	}

	@Override
	public List<Promocion> findByEstablecimientoCode(String codigo) {
		return getSimpleJdbcTemplate().
				query("select codigo, nombre, descripcion,fecVencimiento,numVisitas,imagen,codEstablecimiento,porDescto from `promociones` where codEstablecimiento= ? AND `fecVencimiento`> CURDATE()", 
				new BeanPropertyRowMapper<Promocion>(Promocion.class), codigo);
	}

	@Override
	public int getConteoPromocion() {
		return getSimpleJdbcTemplate().queryForInt("select count(*) from `promociones`");		
	}
}
